package com.backwaveweibo.bww.service;

import com.backwaveweibo.bww.utils.Result;
import org.elasticsearch.search.SearchHit;

import java.io.IOException;

/**
 * @author GHW : RD-Kelsey
 * @description ES搜索引擎-业务
 * @date 2020/6/16
 */

public interface ElasticsearchService<T> {

    /**
     * 同步到ES
     *
     * @param docId     文档的id，必须是String类型，建议使用实体的自增长id，如果不传，会自动生成，但不方便获取。
     * @param data      要传的对象，方法会自动转成JSON，注意实体中对字段用注解进行标注。
     * @param indexName 索引名字，相当于表名，如果ES中没有对应的索引会自动创建，有就直接在该索引下插入数据
     * @return true | false
     */
    boolean importToES(String docId, T data, String indexName) throws IOException;

    /**
     * 从ES中删除文档
     *
     * @param indexName 索引名称
     * @param docId     文档id
     * @return true | false
     */
    boolean deleteFromES(String indexName, String docId);

    /**
     * 根据id查文档
     *
     * @param docId 文档id
     * @return ES响应结果
     */
    Result getById(String docId) throws IOException;

    /**
     * 根据 关键词 搜索
     *
     * @param content
     * @return
     * @throws IOException
     */
    SearchHit[] getByContent(String content) throws IOException;

}
